<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<title>dtrace_probes - RDoc Documentation</title>


<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>

<script src="./js/jquery-3.2.0.min.js"></script>

<script src="./js/vue.min.js"></script>
<script src="./js/js.cookie.min.js"></script>

<link href="./css/fonts.css" rel="stylesheet">
<link id='rdoccss' href="./css/rdoc.css" rel="stylesheet">
<link href="./css/carbon17.css" rel="stylesheet">

<script type="text/javascript">
  var rdoc_rel_prefix = "./";
  var index_rel_prefix = "./";
  var darkModeCsseHref = "./css/rdoc-dm.css"
  var defaultModeCssHref = "./css/rdoc.css"
  // var cssDarkmode = Cookies.get('darkmode');
  
  if( Cookies.get("darkmode") == "true") {
	$('#rdoccss').attr("href", darkModeCsseHref);
}

//  https://cssdeck.com/blog/simple-jquery-stylesheet-switcher/

document.write('<style type="text/css">body{display:none}</style>');

</script>


</head>
<body id="top" role="document" class="file">
  <!-- this is page.html -->
  <div id='actionbar' >
    <div class='wrapper mdiv'>
      <ul class='grids g0'></ul>
    </div> 
    <!-- VERSION HEADER for 3.3.0-preview2 NOT FOUND -->
  </div> <!-- end action bar -->


 <div class='wrapper hdiv'>

 


<nav id='vapp' role="navigation">
  <div id="project-navigation">
    <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2><a href="./index.html" rel="home">Home</a></h2>

  <div id="table-of-contents-navigation"  >
    <a href="./table_of_contents.html#pages">Pages</a>
    <a href="./table_of_contents.html#classes">Classes</a>
    <a href="./table_of_contents.html#methods">Methods</a>
  </div>
</div>

    <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

  </div>

  
<div class="nav-section">
  <h3>Table of Contents</h3>

  <ul class="link-list" role="directory">
    <li><a href="#label-DTrace+Probes">DTrace Probes</a>
    <li><a href="#label-Probes+List">Probes List</a>
    <li><a href="#label-Stability">Stability</a>
    <li><a href="#label-Declared+probes">Declared probes</a>
  </ul>
</div>

  <button id='toggleThing' @click="toggleNav()" >Show/hide navigation</button>

  <div id="project-metadata">
   <div :class="isOpen ? 'block' : 'hidden' " id='toggleMe'>
    
<div id="fileindex-section" class="nav-section">
  <h3>Pages</h3>

  <ul class="link-list">
    <li><a href="./NEWS/NEWS-1_8_7.html">NEWS-1.8.7</a>
    <li><a href="./NEWS/NEWS-1_9_1.html">NEWS-1.9.1</a>
    <li><a href="./NEWS/NEWS-1_9_2.html">NEWS-1.9.2</a>
    <li><a href="./NEWS/NEWS-1_9_3.html">NEWS-1.9.3</a>
    <li><a href="./NEWS/NEWS-2_0_0.html">NEWS-2.0.0</a>
    <li><a href="./NEWS/NEWS-2_1_0.html">NEWS-2.1.0</a>
    <li><a href="./NEWS/NEWS-2_2_0.html">NEWS-2.2.0</a>
    <li><a href="./NEWS/NEWS-2_3_0.html">NEWS-2.3.0</a>
    <li><a href="./NEWS/NEWS-2_4_0.html">NEWS-2.4.0</a>
    <li><a href="./NEWS/NEWS-2_5_0.html">NEWS-2.5.0</a>
    <li><a href="./NEWS/NEWS-2_6_0.html">NEWS-2.6.0</a>
    <li><a href="./NEWS/NEWS-2_7_0.html">NEWS-2.7.0</a>
    <li><a href="./NEWS/NEWS-3_0_0_md.html">NEWS-3.0.0</a>
    <li><a href="./NEWS/NEWS-3_1_0_md.html">NEWS-3.1.0</a>
    <li><a href="./NEWS/NEWS-3_2_0_md.html">NEWS-3.2.0</a>
    <li><a href="./bsearch_rdoc.html">bsearch</a>
    <li><a href="./bug_triaging_rdoc.html">bug_triaging</a>
    <li><a href="./case_mapping_rdoc.html">case_mapping</a>
    <li><a href="./character_selectors_rdoc.html">character_selectors</a>
    <li><a href="./command_injection_rdoc.html">command_injection</a>
    <li><a href="./contributing_md.html">contributing</a>
    <li><a href="./contributing/building_ruby_md.html">building_ruby</a>
    <li><a href="./contributing/documentation_guide_md.html">documentation_guide</a>
    <li><a href="./contributing/glossary_md.html">glossary</a>
    <li><a href="./contributing/making_changes_to_ruby_md.html">making_changes_to_ruby</a>
    <li><a href="./contributing/making_changes_to_stdlibs_md.html">making_changes_to_stdlibs</a>
    <li><a href="./contributing/reporting_issues_md.html">reporting_issues</a>
    <li><a href="./contributing/testing_ruby_md.html">testing_ruby</a>
    <li><a href="./dig_methods_rdoc.html">dig_methods</a>
    <li><a href="./distribution_md.html">distribution</a>
    <li><a href="./dtrace_probes_rdoc.html">dtrace_probes</a>
    <li><a href="./encodings_rdoc.html">encodings</a>
    <li><a href="./extension_ja_rdoc.html">extension.ja</a>
    <li><a href="./extension_rdoc.html">extension</a>
    <li><a href="./fiber_md.html">fiber</a>
    <li><a href="./format_specifications_rdoc.html">format_specifications</a>
    <li><a href="./globals_rdoc.html">globals</a>
    <li><a href="./implicit_conversion_rdoc.html">implicit_conversion</a>
    <li><a href="./keywords_rdoc.html">keywords</a>
    <li><a href="./maintainers_md.html">maintainers</a>
    <li><a href="./marshal_rdoc.html">marshal</a>
    <li><a href="./memory_view_md.html">memory_view</a>
    <li><a href="./optparse/argument_converters_rdoc.html">argument_converters</a>
    <li><a href="./optparse/creates_option_rdoc.html">creates_option</a>
    <li><a href="./optparse/option_params_rdoc.html">option_params</a>
    <li><a href="./optparse/tutorial_rdoc.html">tutorial</a>
    <li><a href="./packed_data_rdoc.html">packed_data</a>
    <li><a href="./ractor_md.html">ractor</a>
    <li><a href="./regexp_rdoc.html">regexp</a>
    <li><a href="./regexp/methods_rdoc.html">methods</a>
    <li><a href="./regexp/unicode_properties_rdoc.html">unicode_properties</a>
    <li><a href="./ruby_3_3_0_preview2/COPYING.html">COPYING</a>
    <li><a href="./ruby_3_3_0_preview2/COPYING_ja.html">COPYING.ja</a>
    <li><a href="./ruby_3_3_0_preview2/LEGAL.html">LEGAL</a>
    <li><a href="./ruby_3_3_0_preview2/NEWS_md.html">NEWS</a>
    <li><a href="./ruby_3_3_0_preview2/README_ja_md.html">README.ja</a>
    <li><a href="./ruby_3_3_0_preview2/README_md.html">README</a>
    <li><a href="./security_rdoc.html">security</a>
    <li><a href="./signals_rdoc.html">signals</a>
    <li><a href="./standard_library_rdoc.html">standard_library</a>
    <li><a href="./strftime_formatting_rdoc.html">strftime_formatting</a>
    <li><a href="./syntax_rdoc.html">syntax</a>
    <li><a href="./syntax/assignment_rdoc.html">assignment</a>
    <li><a href="./syntax/calling_methods_rdoc.html">calling_methods</a>
    <li><a href="./syntax/comments_rdoc.html">comments</a>
    <li><a href="./syntax/control_expressions_rdoc.html">control_expressions</a>
    <li><a href="./syntax/exceptions_rdoc.html">exceptions</a>
    <li><a href="./syntax/literals_rdoc.html">literals</a>
    <li><a href="./syntax/methods_rdoc.html">methods</a>
    <li><a href="./syntax/miscellaneous_rdoc.html">miscellaneous</a>
    <li><a href="./syntax/modules_and_classes_rdoc.html">modules_and_classes</a>
    <li><a href="./syntax/pattern_matching_rdoc.html">pattern_matching</a>
    <li><a href="./syntax/precedence_rdoc.html">precedence</a>
    <li><a href="./syntax/refinements_rdoc.html">refinements</a>
    <li><a href="./timezones_rdoc.html">timezones</a>
    <li><a href="./windows_md.html">windows</a>
    <li><a href="./yjit/yjit_md.html">yjit</a>
    <li><a href="./yjit/yjit_hacking_md.html">yjit_hacking</a>
  </ul>
</div>

   </div>
  </div>
</nav>


<!--  carbon ads here -->

<div id='extraz'>
  <div class='adzbox-index'  >
   
  </div>
 </div>         


<main role="main" aria-label="Page dtrace_probes.rdoc">

<h1 id="label-DTrace+Probes">DTrace Probes<span><a href="#label-DTrace+Probes">&para;</a> <a href="#top">&uarr;</a></span></h1>

<p>A list of DTrace probes and their functionality. “Module” and “Function” cannot be defined in user defined probes (known as USDT), so they will not be specified. Probe definitions are in the format of:</p>

<pre>provider:module:function:name(arguments)</pre>

<p>Since module and function cannot be specified, they will be blank. An example probe definition for Ruby would then be:</p>

<pre>ruby:::method-entry(class name, method name, file name, line number)</pre>

<p>Where “ruby” is the provider name, module and function names are blank, the probe name is “method-entry”, and the probe takes four arguments:</p>
<ul><li>
<p>class name</p>
</li><li>
<p>method name</p>
</li><li>
<p>file name</p>
</li><li>
<p>line number</p>
</li></ul>

<h2 id="label-Probes+List">Probes List<span><a href="#label-Probes+List">&para;</a> <a href="#top">&uarr;</a></span></h2>

<h3 id="label-Stability">Stability<span><a href="#label-Stability">&para;</a> <a href="#top">&uarr;</a></span></h3>

<p>Before we list the specific probes, let’s talk about stability. Probe stability is declared in the probes.d file at the bottom on the pragma D attributes lines. Here is a description of each of the stability declarations.</p>
<dl class="rdoc-list label-list"><dt>Provider name stability
<dd>
<p>The provider name of “ruby” has been declared as stable. It is unlikely that we will change the provider name from “ruby” to something else.</p>
</dd><dt><a href="Module.html"><code>Module</code></a> and Function stability
<dd>
<p>Since we are not allowed to provide values for the module and function name, the values we have provided (no value) is declared as stable.</p>
</dd><dt>Probe name stability
<dd>
<p>The probe names are likely to change in the future, so they are marked as “Evolving”. Consumers should not depend on these names to be stable.</p>
</dd><dt>Probe argument stability
<dd>
<p>The parameters passed to the probes are likely to change in the future, so they are marked as “Evolving”. Consumers should not depend on these to be stable.</p>
</dd></dl>

<h3 id="label-Declared+probes">Declared probes<span><a href="#label-Declared+probes">&para;</a> <a href="#top">&uarr;</a></span></h3>

<p>Probes are defined in the probes.d file. Here are the declared probes along with when they are fired and the arguments they take:</p>
<dl class="rdoc-list label-list"><dt>ruby:::method-entry(classname, methodname, filename, lineno);
<dd>
<p>This probe is fired just before a method is entered.</p>
<dl class="rdoc-list note-list"><dt>classname
<dd>
<p>name of the class (a string)</p>
</dd><dt>methodname
<dd>
<p>name of the method about to be executed (a string)</p>
</dd><dt>filename
<dd>
<p>the file name where the method is _being called_ (a string)</p>
</dd><dt>lineno
<dd>
<p>the line number where the method is _being called_ (an int)</p>
</dd></dl>

<p><strong>NOTE</strong>: will only be fired if tracing is enabled, e.g. with: <code>TracePoint.new{}.enable</code>. See <a href="https://bugs.ruby-lang.org/issues/14104">Feature#14104</a> for more details.</p>
</dd><dt>ruby:::method-return(classname, methodname, filename, lineno);
<dd>
<p>This probe is fired just after a method has returned. The arguments are the same as “ruby:::method-entry”.</p>

<p><strong>NOTE</strong>: will only be fired if tracing is enabled, e.g. with: <code>TracePoint.new{}.enable</code>. See <a href="https://bugs.ruby-lang.org/issues/14104">Feature#14104</a> for more details.</p>
</dd><dt>ruby:::cmethod-entry(classname, methodname, filename, lineno);
<dd>
<p>This probe is fired just before a C method is entered. The arguments are the same as “ruby:::method-entry”.</p>
</dd><dt>ruby:::cmethod-return(classname, methodname, filename, lineno);
<dd>
<p>This probe is fired just before a C method returns. The arguments are the same as “ruby:::method-entry”.</p>
</dd><dt>ruby:::require-entry(requiredfile, filename, lineno);
<dd>
<p>This probe is fired on calls to rb_require_safe (when a file is required).</p>
<dl class="rdoc-list note-list"><dt>requiredfile
<dd>
<p>the name of the file to be required (string).</p>
</dd><dt>filename
<dd>
<p>the file that called “<code>require</code>” (string).</p>
</dd><dt>lineno
<dd>
<p>the line number where the call to require was made (int).</p>
</dd></dl>
</dd><dt>ruby:::require-return(requiredfile, filename, lineno);
<dd>
<p>This probe is fired just before rb_require_safe (when a file is required) returns. The arguments are the same as “ruby:::require-entry”. This probe will not fire if there was an exception during file require.</p>
</dd><dt>ruby:::find-require-entry(requiredfile, filename, lineno);
<dd>
<p>This probe is fired right before search_required is called. search_required determines whether the file has already been required by searching loaded features (<code>$&quot;</code>), and if not, figures out which file must be loaded.</p>
<dl class="rdoc-list note-list"><dt>requiredfile
<dd>
<p>the file to be required (string).</p>
</dd><dt>filename
<dd>
<p>the file that called “require” (string).</p>
</dd><dt>lineno
<dd>
<p>the line number where the call to require was made (int).</p>
</dd></dl>
</dd><dt>ruby:::find-require-return(requiredfile, filename, lineno);
<dd>
<p>This probe is fired right after search_required returns. See the documentation for “ruby:::find-require-entry” for more details. Arguments for this probe are the same as “ruby:::find-require-entry”.</p>
</dd><dt>ruby:::load-entry(loadedfile, filename, lineno);
<dd>
<p>This probe is fired when calls to “load” are made. The arguments are the same as “ruby:::require-entry”.</p>
</dd><dt>ruby:::load-return(loadedfile, filename, lineno);
<dd>
<p>This probe is fired when “load” returns. The arguments are the same as “ruby:::load-entry”.</p>
</dd><dt>ruby:::raise(classname, filename, lineno);
<dd>
<p>This probe is fired when an exception is raised.</p>
<dl class="rdoc-list note-list"><dt>classname
<dd>
<p>the class name of the raised exception (string)</p>
</dd><dt>filename
<dd>
<p>the name of the file where the exception was raised (string)</p>
</dd><dt>lineno
<dd>
<p>the line number in the file where the exception was raised (int)</p>
</dd></dl>
</dd><dt>ruby:::object-create(classname, filename, lineno);
<dd>
<p>This probe is fired when an object is about to be allocated.</p>
<dl class="rdoc-list note-list"><dt>classname
<dd>
<p>the class of the allocated object (string)</p>
</dd><dt>filename
<dd>
<p>the name of the file where the object is allocated (string)</p>
</dd><dt>lineno
<dd>
<p>the line number in the file where the object is allocated (int)</p>
</dd></dl>
</dd><dt>ruby:::array-create(length, filename, lineno);
<dd>
<p>This probe is fired when an <a href="Array.html"><code>Array</code></a> is about to be allocated.</p>
<dl class="rdoc-list note-list"><dt>length
<dd>
<p>the size of the array (long)</p>
</dd><dt>filename
<dd>
<p>the name of the file where the array is allocated (string)</p>
</dd><dt>lineno
<dd>
<p>the line number in the file where the array is allocated (int)</p>
</dd></dl>
</dd><dt>ruby:::hash-create(length, filename, lineno);
<dd>
<p>This probe is fired when a <a href="Hash.html"><code>Hash</code></a> is about to be allocated.</p>
<dl class="rdoc-list note-list"><dt>length
<dd>
<p>the size of the hash (long)</p>
</dd><dt>filename
<dd>
<p>the name of the file where the hash is allocated (string)</p>
</dd><dt>lineno
<dd>
<p>the line number in the file where the hash is allocated (int)</p>
</dd></dl>
</dd><dt>ruby:::string-create(length, filename, lineno);
<dd>
<p>This probe is fired when a <a href="String.html"><code>String</code></a> is about to be allocated.</p>
<dl class="rdoc-list note-list"><dt>length
<dd>
<p>the size of the string (long)</p>
</dd><dt>filename
<dd>
<p>the name of the file where the string is allocated (string)</p>
</dd><dt>lineno
<dd>
<p>the line number in the file where the string is allocated (int)</p>
</dd></dl>
</dd><dt>ruby:::symbol-create(str, filename, lineno);
<dd>
<p>This probe is fired when a <a href="Symbol.html"><code>Symbol</code></a> is about to be allocated.</p>
<dl class="rdoc-list note-list"><dt>str
<dd>
<p>the contents of the symbol (string)</p>
</dd><dt>filename
<dd>
<p>the name of the file where the string is allocated (string)</p>
</dd><dt>lineno
<dd>
<p>the line number in the file where the string is allocated (int)</p>
</dd></dl>
</dd><dt>ruby:::parse-begin(sourcefile, lineno);
<dd>
<p>Fired just before parsing and compiling a source file.</p>
<dl class="rdoc-list note-list"><dt>sourcefile
<dd>
<p>the file being parsed (string)</p>
</dd><dt>lineno
<dd>
<p>the line number where the source starts (int)</p>
</dd></dl>
</dd><dt>ruby:::parse-end(sourcefile, lineno);
<dd>
<p>Fired just after parsing and compiling a source file.</p>
<dl class="rdoc-list note-list"><dt>sourcefile
<dd>
<p>the file being parsed (string)</p>
</dd><dt>lineno
<dd>
<p>the line number where the source ended (int)</p>
</dd></dl>
</dd><dt>ruby:::gc-mark-begin();
<dd>
<p>Fired at the beginning of a mark phase.</p>
</dd><dt>ruby:::gc-mark-end();
<dd>
<p>Fired at the end of a mark phase.</p>
</dd><dt>ruby:::gc-sweep-begin();
<dd>
<p>Fired at the beginning of a sweep phase.</p>
</dd><dt>ruby:::gc-sweep-end();
<dd>
<p>Fired at the end of a sweep phase.</p>
</dd><dt>ruby:::method-cache-clear(class, sourcefile, lineno);
<dd>
<p>Fired when the method cache is cleared.</p>
<dl class="rdoc-list note-list"><dt>class
<dd>
<p>the classname being cleared, or “global” (string)</p>
</dd><dt>sourcefile
<dd>
<p>the file being parsed (string)</p>
</dd><dt>lineno
<dd>
<p>the line number where the source ended (int)</p>
</dd></dl>
</dd></dl>

</main>

</div>  <!--  class='wrapper hdiv' -->


<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a></p>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.4.0.</p>
<p>Based on <a href="https://github.com/ged/darkfish/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.</p>

  
    <p><p><a href="https://ruby-doc.org">Ruby-doc.org</a> is provided by <a href="https://jamesbritt.com">James Britt</a> and <a href="https://neurogami.com">Neurogami</a>.</p><p><a href="https://jamesbritt.bandcamp.com/">Maximum R+D</a>.  </p>
</p>
  
  </footer>

<script type="text/javascript">


  let ads  = $("#carbonads-container").children().detach();


  function swapMode() {
    var cookieName = 'darkmode';
    var cssDarkmode = Cookies.get(cookieName);
    console.log("***** swapMode! " + cssDarkmode + " *****");


    if (cssDarkmode == "true") {
      console.log("We have dark mode, set the css to light ...");
      $('#rdoccss').attr("href", defaultModeCssHref);
      $('#cssSelect').text("Dark mode");
      cssDarkmode = "false";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    } else {
      console.log("We not have dark mode, set the css to dark ...");
      $('#rdoccss').attr("href", darkModeCsseHref);
      $('#cssSelect').text("Light mode");
      cssDarkmode = "true";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    }

    console.log("  --------------- ");
  }


const vueCssApp = new Vue({
el: '#menubar',
data: {
isDark: false
},
methods: {
toggleClass: function(event){
this.isDark = !this.isDark;
}
}
})

const vueApp = new Vue({
el: '#vapp',
data: { 
isOpen: true
},

mounted() {
this.handleResize();
this.manage_mob_classes();
window.addEventListener('resize', this.handleResize)
//this.isOpen !=  (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},
destroyed() {
window.removeEventListener('resize', this.handleResize)
},
created() {
//manage_mob_classes();
},

methods : {
isMobile() {
  return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},

  handleResize() {
    if (!this.isMobile()) {
      this.isOpen = window.innerWidth > 800;
    }
  },

  manage_mob_classes() {
    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
      $("nav").addClass("mob_nav");
      $("main").addClass("mob_main");
      $("#extraz").addClass("mob_extraz");
      $("#carbonads-container").addClass("mob_carbonads-container");
      this.isOpen  = false;
    } else {
      $("nav").removeClass("mob_nav") 
        $("main").removeClass("mob_main");
      $("#extraz").removeClass("mob_extraz");
      $("#carbonads-container").removeClass("mob_carbonads-container");
      this.isOpen  = true;
    }
  },

  toggleNav() {
    this.isOpen =! this.isOpen ;
    // alert("Toggle nav!");
    console.log("toggleNav() click: " + this.isOpen );
  }
}
})

$("#carbonads-container").append(ads);


$(function() {

    var darkmode = Cookies.get("darkmode");
    console.log("Document ready: " + darkmode);

    if ( darkmode  == "true" ) {
      $('#cssSelect').text("Light mode");
    } else {
      $('#cssSelect').text("Dark mode");
     }

    $('body').css('display','block');
    });

</script>

    
  </body> 
</html>

